[C] Arquivos e Stat
Publicado por Enzo de Brito Ferber (última atualização em 23/09/2010)
[ Hits: 8.518 ]
Homepage: http://www.maximasonorizacao.com.br
Programa simples mostrando como usar a função stat(), e como manipular aquivos de uma forma bem simples. Ponteiros também são usados.
Baixe:
$ tar -xzvf loadfile.tar.gz
$ cd loadfile
$ ./loadfile text
;)
[]'s
/* loadfile.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
int main ( int argc, char *argv[] )
{
char *fullfile, *p, *p2, c ;
struct stat fileinfo;
FILE *openfile;
if ( argc < 2 )
{
printf ( "[*] Usage: %s <file>\n", argv[0] );
exit ( EXIT_FAILURE );
}
/* read-binary permission */
openfile = fopen ( argv[1], "rb" );
if ( !openfile )
{
printf ( "[*] Can't open file %s\n", argv[1] );
exit ( EXIT_FAILURE );
}
/* file info for file size */
if ( stat ( argv[1], &fileinfo ) == -1 )
{
printf ( "[*] Can't stat() file %s\n", argv[1] );
exit ( EXIT_FAILURE );
}
/* alloc memory for the pointer
*
* fileinfo.st_size = size of the file in bytes
*/
fullfile = ( char * ) malloc ( fileinfo.st_size * sizeof ( char ));
if ( !fullfile )
{
printf ( "[*] Can't malloc() %d bytes\n", fileinfo.st_size );
exit ( EXIT_FAILURE );
}
/* To view all the resources of the stat structure:
*
* $ man stat
*/
printf ( "File info:\n" );
printf ( "UID : %d\n", fileinfo.st_uid );
printf ( "GID : %d\n", fileinfo.st_gid );
printf ( "Size: %d bytes\n", fileinfo.st_size );
printf ( "Mode: %8.8x\n", fileinfo.st_mode );
/* reference pointer */
p = fullfile;
while ( 1 )
{
if ( feof ( openfile )) break;
fscanf ( openfile, "%c", &(*(p++)) );
}
/* print file */
p2 = fullfile;
while ( fullfile < p ) putchar ( *(fullfile++) );
/* put back in place what you use */
free ( p2 );
fclose ( openfile );
return 0;
}
Executar um arquivo com o programa padrão no C#
Agenda (fones, compromissos, aniversários) em C usando arquivos binários
Nenhum comentário foi encontrado.
librePods: liberte seus AirPods em 2026
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Instalando e definindo as novas fontes Adwaita no GNOME
Configurar aviso da temperatura da CPU no Conky
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Conky não mostra temperaturas da CPU no notebook (15)
Após todos esses anos... youtube! (2)
archlinux resolução abaixou após atualização [RESOLVIDO] (19)
Registro do 'last&qu... errado [RESOLVIDO] (9)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (2)









